<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //展开运算符 ... :  可以展开数据

      //一.展开数组

      //获取最大值  循环 排序  或者math方法 Math.max
      // var res = Math.max(99, 3, 2, 1, 23); //直接使用不支持数组
      // console.log(res);
      // let arr = [5, 34, 7, 32];
      // var res1 = Math.max(arr); //不支持数组 ,只能把数组转换成数据 用...
      // console.log(res1); //NaN

      // let arr2 = [5, 34, 7, 32];
      // var res2 = Math.max(...arr); //去壳
      // console.log(res2); //

      // //var arr5= ...arr5;  //去壳不能单独使用  报错
      // let arr5 = [...arr2, 5, 1000, 4, 76];
      // console.log(arr5);
      //
      //
      //
      //1....可以去壳  还可以把伪数组转换成数组
      //var lis = document.getElementsByTagName("li");
      //  console.log(lis);
      //  // lis.forEach(function(){

      //  // })
      // var arr =  [...lis];
      // console.log(arr);

      //2.合并数组  concat   或者...
      /*  var arr1 = [1, 3, 4];
           var arr2 = [7, 8, 9];
           var res = arr1.concat(arr2);
           console.log(res);
           //或者
           var res1 = [...arr1, ...arr2];
           console.log(res1);
      */
      //二.对象的展开
      // var obj = {
      //   myname: "张三",
      //   age: 20,
      // };
      // var obj2 = { ...obj, height: "190cm", hobby: "篮球" };
      // console.log(obj2);

      //合并对象
      /* var config1 = {
             flag: true,
             isChecked: false,
             name: "组件1",
           };
           var config2 = {
             num: 10,
             height: "100cm",
             name: "组件2",
           };
           //对象 键名不能重复
           var config = { ...config1, ...config2 };
           console.log(config); //组件2把组件1覆盖了 */

      //数组去重
      /* var arr = [1, 2, 1, 2, 3, 4, 5];
           var obj = {};

           arr.forEach(function (item) {
             obj[item] = "1"; //给每个键名赋值1 得到键名
           });
           // console.log(obj); //得到键名
           var res = [];
           for (var key in obj) {
             res.push(key);
           }
           console.log(res); */

      //三.参数的展开 rest参数  剩余参数
      // function fn(...arr) {
      //   console.log(arr);
      // }
      // fn(1, 2, 3, 4, 5);
      function fn(a, b, c, ...arr) {
        //此时有abc三个形参,...arr接收剩余的参数 所以arr是剩下的4,5
        console.log(arr);
      }
      fn(1, 2, 3, 4, 5);
    </script>
  </body>
</html>
